import request from './request'
import axios from 'axios'

// 创建文件服务的axios实例（直接使用/file路径，不带/api前缀）
const fileRequest = axios.create({
  baseURL: '/file',
  timeout: 30000
})

// 文件请求拦截器 - 添加token
fileRequest.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 文件响应拦截器
fileRequest.interceptors.response.use(
  response => response.data,
  error => {
    console.error('文件接口请求错误:', error)
    return Promise.reject(error)
  }
)

// 法律文档分页查询
export const getDocumentPage = (params) => {
  return request.get('/legal-document/page', { params })
}

// 法律文档详情查询
export const getDocumentDetail = (id) => {
  return request.get(`/legal-document/${id}`)
}

// 法律文档新增
export const createDocument = (documentData) => {
  return request.post('/legal-document', documentData)
}

// 法律文档更新
export const updateDocument = (documentData) => {
  return request.put('/legal-document', documentData)
}

// 法律文档删除
export const deleteDocument = (id) => {
  return request.delete(`/legal-document/${id}`)
}

// 文档类型枚举
export const DOC_TYPES = {
  0: '法律',
  1: '案例', 
  2: '判决书',
  3: '文章'
}

// 文档类型选项（用于下拉框）
export const DOC_TYPE_OPTIONS = [
  { label: '法律', value: 0 },
  { label: '案例', value: 1 },
  { label: '判决书', value: 2 },
  { label: '文章', value: 3 }
]

// ==================== 文件相关接口 ====================

/**
 * 上传文档文件（PDF/Word）
 * @param {File} file - 文档文件
 * @returns {Promise} 上传结果
 */
export const uploadDocument = async (file) => {
  const formData = new FormData()
  formData.append('file', file)
  
  try {
    const token = localStorage.getItem('token')
    const response = await fetch('/file/uploadDocument', {
      method: 'POST',
      headers: {
        'Authorization': token
      },
      body: formData
    })
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }
    
    const result = await response.json()
    return result
  } catch (error) {
    console.error('文档上传失败:', error)
    throw error
  }
}

/**
 * 获取文档预览URL
 * @param {String} objectName - 文件存储路径
 * @returns {Promise} 预览URL信息
 */
export const getDocumentPreviewUrl = (objectName) => {
  return fileRequest.get('/previewUrl', { 
    params: { objectName } 
  })
}

/**
 * 获取文档下载URL
 * @param {String} objectName - 文件存储路径
 * @returns {Promise} 下载URL信息
 */
export const getDocumentDownloadUrl = (objectName) => {
  return fileRequest.get('/downloadUrl', { 
    params: { objectName } 
  })
}